Pokemon Soul Link Discord Bot

🎮 Overview

A custom Discord bot for organizing Pokemon Soul Link runs directly inside a server. It tracks players, editions, routes, encounters, linked catches, active teams, boxed Pokemon, deaths, gym progress, and useful run statistics. The project was built with .NET 9 and Discord.Net, with a focus on making cooperative Nuzlocke-style challenges easier to manage during live play. Instead of keeping progress in spreadsheets or chat messages, the bot gives the group a shared, structured source of truth.

⚔️ Features Built for Real Runs

The bot supports the practical flow of a Soul Link session: setting up runs, assigning players and editions, recording route encounters, swapping team members, checking arena information, viewing the current team, and keeping dead Pokemon separated from active progress. It also handles Pokemon-specific data such as names, types, evolution requirements, routes, gym leaders, and level information, making commands useful beyond simple bookkeeping.

🔗 Linked Encounter Tracking

Soul Link runs depend on connections between Pokemon caught by different players. The bot helps preserve those relationships across the entire run, so the team can quickly see which Pokemon belong together and how route progress affects everyone. This reduces manual mistakes and makes the run state easier to understand, especially when several players are updating their teams at the same time.

📘 Pokemon Data & Pokedex Support

The bot integrates Pokemon data into Discord commands, including Pokedex-style lookups, type information, evolution requirements, route data, editions, and arena details. That means players can quickly check relevant information without leaving Discord, which is especially helpful during active gameplay when decisions need to happen fast.

🛠️ Technical Highlights

Built as a structured .NET 9 application, the project separates Discord command handling, application services, domain models, presentation logic, and JSON-based persistence. This keeps the bot maintainable while still being lightweight enough to run without a large infrastructure setup. The solution also includes an xUnit test project covering command behavior, run logic, embed output, startup tasks, and data services. That testing layer is important because the bot manages shared progress over multiple play sessions, where data consistency really matters.

An unhandled error has occurred. Reload 🗙